package com.mzy.javaapi.IO.fileio;

import org.testng.annotations.Test;

import java.io.File;
import java.io.Reader;

/**
 * Created with IntelliJ IDEA.
 *
 * @Author mzy
 * @Date 2022/7/3 18:34
 * @Version 1.0
 */
public class DirectoryOpe {
    // 文件存放根目录
    private static final String fileParent = "F:\\每日脚本暂存\\新建文件路径\\2022.07.03";

    /**
     * 判断 fileParent + "\\test01.txt"是否存在，如果存在就删除
     */
    @Test
    public void Test01() {
        File file = new File(fileParent + "\\test01.txt");
        if (file.exists()) {
            if (file.delete()) {
                System.out.println(fileParent + "删除成功");
            } else {
                System.out.println(fileParent + "删除失败");
            }
        } else {
            System.out.println(fileParent + "文件不存在");
        }
    }

    /**
     * 判断 fileParent 是否存在，如果存在就删除，否则提示不存在
     * 这里可以看出来，在Java编程中，目录也被当作是文件 ***重点理解
     * 空目录
     */
    @Test
    public void Test02() {
        File file = new File(fileParent);
        if (file.exists()) {
            if (file.delete()) {
                System.out.println(fileParent + "删除成功");
            } else {
                System.out.println(fileParent + "删除失败");
            }
        } else {
            System.out.println(fileParent + "文件不存在");
        }
    }

    /**
     * 判断 fileParent 是否存在，如果存在就删除，否则提示不存在
     * 这里可以看出来，在Java编程中，目录也被当作是文件 ***重点理解
     * 非空目录
     * 很强大！
     */
    @Test
    public void Test03() {
        String directoryPath = fileParent + "\\a\\b\\c";
        File file = new File(directoryPath);
        try {
            deleteDirectory(file);
        } catch (Exception e) {
            System.out.println("IO异常");
            e.printStackTrace();
        }

    }

    /**
     * 传入目录名，递归删除当前目录和当前目录下的所有文件和目录
     *
     * @param directory
     */
    public void deleteDirectory(File directory) {
        // 判断文件是否为目录
        if (directory.isDirectory()) {
            File[] files = directory.listFiles();
            // 如果文件包含任何文件或目录
            if (files != null) {
                for (File fileItem : files
                ) {
                    // 递归调用删除子目录或文件
                    deleteDirectory(fileItem);
                }
            }
        }

        // 可知文件为非目录或者为空目录
        // 可直接删除
        if (directory.delete()) {
            System.out.println(directory + "文件删除成功..");
        } else {
            System.out.println(directory + "IO异常文件删除失败..");
        }
    }


    /**
     * 判断 fileParent 是否存在，如果存在就提示已经存在，
     * 否则就创建
     * file.mkdirs() 可以创建多级目录**
     * file.mkdir() 只能创建单级目录**
     */
    @Test
    public void Test04() {
        String directoryPath = fileParent + "\\a\\b\\c";
        File file = new File(directoryPath);
        if (file.exists()) {
            System.out.println(directoryPath + "存在..");
        } else {
            if (file.mkdirs()) {
                System.out.println(directoryPath + "创建成功..");
            } else {
                System.out.println(directoryPath + "创建失败..");

            }
        }
    }

}
